package taller.dataLayer.entities;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;

import taller.dataLayer.vo.ItemSolicitudCompraVO;
import taller.dataLayer.vo.SolicitudCompraVO;

@Entity
public class SolicitudCompra implements Serializable {
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	private Integer numero;
	private Date fecha;
	private Integer numeroTaller;
	@OneToMany(cascade = CascadeType.ALL)
	@JoinColumn(name = "solicitudCompra_numero")
	private List<ItemSolicitudCompra> items;
	private static final long serialVersionUID = 1L;

	public SolicitudCompra() {
		items = new ArrayList<ItemSolicitudCompra>();
		fecha = new Date();
	}
	
	public SolicitudCompraVO getVO(){
		List<ItemSolicitudCompraVO> itemsVO = new ArrayList<ItemSolicitudCompraVO>();
		
		for (ItemSolicitudCompra itemSolicitudCompra : items) {
			ItemSolicitudCompraVO itemVO = itemSolicitudCompra.getVO();
			itemsVO.add(itemVO);
		}
		
		SolicitudCompraVO solicitudCompraVO = new SolicitudCompraVO(this.numero, this.fecha, 
				this.numeroTaller, itemsVO);
		
		return solicitudCompraVO;
	}
	
	public void setVO(SolicitudCompraVO solicitudCompraVO){
		List<ItemSolicitudCompra> items = new ArrayList<ItemSolicitudCompra>();
		
		List<ItemSolicitudCompraVO> itemsVO = solicitudCompraVO.getItems();
		if (itemsVO != null) {
			for (ItemSolicitudCompraVO itemSolicitudCompraVO : itemsVO) {
				ItemSolicitudCompra item = new ItemSolicitudCompra();
				item.setVO(itemSolicitudCompraVO);
				items.add(item);
			}
		}

		this.items = items;	
		this.fecha = solicitudCompraVO.getFecha();
		this.numero = solicitudCompraVO.getNumero();
		this.numeroTaller = solicitudCompraVO.getNumeroTaller();
	}
	
	public Integer getNumero() {
		return this.numero;
	}

	public void setNumero(Integer numero) {
		this.numero = numero;
	}   
	
	public Date getFecha() {
		return this.fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}   
	
	public List<ItemSolicitudCompra> getItems() {
		return this.items;
	}

	public void setItems(List<ItemSolicitudCompra> items) {
		this.items = items;
	}
	
	public Integer getNumeroTaller() {
		return numeroTaller;
	}
	
	public void setNumeroTaller(Integer numeroTaller) {
		this.numeroTaller = numeroTaller;
	}
}
